Voeg regel toe voor error structuur bij Bad Requests#310
Voeg regel toe voor error structuur bij Bad Requests#310TimvdLippe wants to merge 5 commits intodevelopfrom
Conversation
Mogelijkheden voor naamgeving van het JSON veld:
|
|
@kad-sprenr Dit is de PR waar Mark en ik het over hadden. Ben jij in de gelegenheid hier naar te kijken en de conversatie voort te brengen met de andere API experts? |
|
@TimvdLippe Wij zijn het op zich eens om 'errors' te gebruiken omdat je daarmee de voorbeelden in RFC9457 volgt en dat lijkt momenteel de standaard te zijn voor het uitbreiden van problem+json. Wat @strijm en ik het liefste zien is dat die RFC volledig gevolgd wordt en niet gedeeltelijk, dus dat ook 'name' hernoemd wordt naar 'pointer', en niet naar iets dat afwijkt van de RFC (zoals location). |
|
Vandaag offline besproken. Het plan is om de |
Hier was initieel geen consensus voor bij de behandeling van het hoofdstuk "Error Handling".
f735d8e to
56ee465
Compare
| try { | ||
| return new ObjectMapper().readValue(entityStream, PostRequestyBody.class); | ||
| } catch (IOException e) { | ||
| throw new BadRequestProblem( |
There was a problem hiding this comment.
@kad-sprenr Is dit ook een gangbare oplossing voor Spring? Ik ben niet up-to-date met hoe moderne projecten met Jackson JSON omzetten naar Java classes. Het lijkt er in ieder geval op dat hiermee makkelijk 1 methode kan worden gebruikt om een generieke parsing error om te zetten in een BadRequestProblem die het juiste application/problem+json response oplevert
| } | ||
|
|
||
| @Test | ||
| void testReturnsBothBodySchemaIssuesAndQueryParamFailures() { |
There was a problem hiding this comment.
In deze test tonen we ook aan dat we voldoen aan /core/error-handling/all-errors waarbij alle fouten in 1 keer worden teruggeven, voor zowel body als query input. Dat kan helaas niet als de parsing van de body faalt, maar wel voor schema validatie. Dat is in lijn met de gedachte achter die regel.
| public String detail; | ||
|
|
||
| @Schema(nullable = true, description = "A locator for the offending value") | ||
| @JsonInclude(value = JsonInclude.Include.NON_NULL) |
There was a problem hiding this comment.
Zo zorg je ervoor dat als er geen location is, dat als je null hierin stopt hij niet "location": null in de JSON response zet, maar hem gewoon weglaat.
Hier was initieel geen consensus voor bij de behandeling van het hoofdstuk "Error Handling".